import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import { Task } from '../../pages/tasklist/task';

@Injectable()
export class HttpDataProvider {

  private readonly baseUrl: string = 'https://api2.bmob.cn/1';
  private readonly httpOptions : object = {
    headers : new HttpHeaders({
     'X-Bmob-Application-Id':'0d00ccf1d79b6ba7311bb902462fe4bb',
     'X-Bmob-REST-API-Key': '35a764a132fe69a9c3abae92fb84fb4a',
      'Content-Type': 'application/json',
    })
  };
  constructor(public http: HttpClient) {
    console.log('获取HTTP数据服务加载');
  }
  

  /**
   * 获取待办事项列表
   * @returns{Obsevable<Task>} 待办事项列表数据集合
   */

  getTaskList(): Observable<Task[]>{
    return this.http.get<Task[]>(`${this.baseUrl}/classes/ToDoList`,
    this.httpOptions).map(data => data["results"]);
  }
  /**
   *获取指定待办事项
   * @param objectId
   */
  getTask(objectId: string): Observable<Task>{
    return this.http.get<Task>(`${this.baseUrl}/classes/ToDoList/${objectId}`,
    this.httpOptions);
    
  }
  /**
   * 新增待办事项
   * @param task
   * @returns{Obsevable<Task[]>}响应结果
   */
  addTask(task:Task):Observable<Task>{
    let _task = {title: task.title, status: task.status, description : task.description};
    return this.http.post<Task>(`${this.baseUrl}/classes/ToDoList/`, _task,this.httpOptions);
  }
/**
 * 更新指定待办事项
 * @param task 
 *  @returns{Obsevable<Task[]>}响应结果
 */
  updataTask(task : Task): Observable<Task>{
    let _task = {title: task.title, status: task.status, description:task.description};
    return this.http.put<Task>(`${this.baseUrl}/classes/ToDoList/${task.objectId}`, _task,this.httpOptions);
  }

  deleTask(task : Task): Observable<{}>{
    return this.http.delete(`${this.baseUrl}/classes/ToDoList/${task.objectId}`,this.httpOptions)
  }

}
